package com.zh.note.design;

/**
 * 饿汉式
 */
//public class Singleton {
//
//    private static Singleton instance =  new Singleton();
//
//    private Singleton(){}
//
//    public static Singleton getInstance(){
//        return instance;
//    }
//}

/**
 * 懒汉式
 * <p>
 * 双端检索
 */
//public class Singleton {
//    private static Singleton instance;
//
//    private Singleton() {
//
//    }
//
//    public static synchronized Singleton getInstance() {
//        if (instance == null) {
//            instance = new Singleton();
//        }
//        return instance;
//    }
//}

/**
 * 双端检索
 */
//public class Singleton {
//    private static  volatile Singleton instance;
//
//    private Singleton() {
//    }
//    public static Singleton getInstance(){
//        if (instance == null) {
//            synchronized (Singleton.class) {
//                if (instance == null) {
//                    instance = new Singleton();
//                }
//            }
//
//        }
//        return instance;
//    }
//}

/**
 * 静态内部类
 */
public class Singleton {

    // 静态内部类
    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }

    private Singleton() {
    }

    public static final Singleton getInstance() {
        return SingletonHolder.instance;
    }
}
